package main

import (
	"fmt"
	"time"
)

// 案例：定时任务
// 许多应用需要定时执行多个任务，例如数据库备份、数据同步等。这要求我们能够管理多个定时任务，
// 并且灵活地调整任务的执行计划。

func task1() {
	fmt.Println("Task 1 excuted")
}

func task2() {
	fmt.Println("Task 2 executed")
}
func main() {

	// 创建了两个time.Ticker，分别用于控制两个不同频率的任务。
	// 通过在一个goroutine中使用select语句监听两个Ticker的通道，我们可以根据不同的时间间隔触发不同的任务
	ticker1 := time.NewTicker(24 * time.Hour)
	ticker2 := time.NewTicker(30 * time.Minute)

	go func() {
		for {
			select {
			case <-ticker1.C:
				task1()
			case <-ticker2.C:
				task2()
			}
		}
	}()

	// 模拟运行一段时间后停止
	time.Sleep(24 * time.Hour)
	ticker1.Stop()
	ticker2.Stop()
}
